/*
 * Copyright (C) 2021-2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef GATT_BASED_SERVICES_MANAGER_H
#define GATT_BASED_SERVICES_MANAGER_H

#include <memory>
#include "base_def.h"
#include "dis/device_information_service.h"
#include "dispatcher.h"
#include "gas/generic_access_service.h"
#include "gatts/generic_attribute_service.h"

namespace OHOS {
namespace bluetooth {
class GattBasedServicesManager {
public:
    GattBasedServicesManager(GattServerService &server, utility::Dispatcher &dispatcher);

    int Enable() const;
    void Disable() const;

    ~GattBasedServicesManager();

    BT_DISALLOW_COPY_AND_ASSIGN(GattBasedServicesManager);

private:
    std::unique_ptr<GenericAccessService> gas_ = {nullptr};
    std::unique_ptr<DeviceInformationService> dis_ = {nullptr};
    std::unique_ptr<GenericAttributeService> gatts_ = {nullptr};
};
}  // namespace bluetooth
}  // namespace OHOS

#endif  // GATT_BASED_SERVICES_MANAGER_H